// 登录
// import request from '@/utils/request'
import { login } from '../../API/login'
import { setCookie } from '../../utils/auth'

export default ({
  namespaced: true,
  state: {
    ruleForm: {}, // 空对象，存储登录表单数据
    token: ''
  },
  getters: {
    // 这里必须是函数，且一定要有返回值
    getUsername (state) {
      return state.username
    }
  },
  mutations: {
    CHANGE (state, data) {
      state.username = data
    },
    SAVE_TOKEN (state, data) {
      state.token = data
    }
  },
  actions: {
    LOGIN_IN ({ commit }, data) {
      // 发起登录请求
      return new Promise((resolve, reject) => {
        login(data)
          .then(res => {
            // console.log(res)
            const { data: { token } } = res
            setCookie('token', token)
            // const token = res.data.token
            commit('SAVE_TOKEN', token) // 保存令牌到state中:通过commit提交到mutations中
            resolve(res) // 这个必须有， resolve(res) 的作用是在异步操作成功后，
            // 将结果传递给调用者，并且使 Promise 进入 resolved（已解决）状态。
            // 在这种情况下，如果省略了 resolve(res)，则 Promise 没有机会完成，
            // 因此调用者也无法知道异步操作何时完成，也就无法在登录成功后继续执行后续的操作。
          })
          .catch(err => {
            console.log(err)
            reject(err)
          })
      })
    }
  }
})
